/*
** ---> This Test State is testing the following behaviours
** ---> Seek - Face - Flee - LookWhereYoureGoing - Wander
**
** ---> Louie
*/

#ifndef TEST_STATE_H
#define TEST_STATE_H

#include "GameState.h"
#include "Singleton.h"
#include "GameCamera.h"

#include "Unit.h"
#include "Seek.h"
#include "Face.h"
#include "Flee.h"
#include "LookWhereYoureGoing.h"
#include "Wander.h"

class TestState : public Engine::GameState, public Engine::NonCopyable
{
	private:
		friend class Engine::Singleton <TestState>;
		unsigned int m_hash;//hash stored once so it wont have to be calced each time 

		TestState();

		Engine::Unit *m_wanderer, *m_seeker, *m_feeler;

		Engine::Seek *sb_seek;
		Engine::Face *sb_face;
		Engine::Flee *sb_flee;
		Engine::LookWhereYoureGoing *sb_lwyg;
		Engine::Wander *sb_wander, *sb_wander2;

	public:
		//inherited from GameState
		const char* GetName() const {return "TestState";}
		unsigned int GetHash() const {return m_hash;}
		void Activate();
		void Update();
		void Draw();

		void OnKeyboardEvent(const SDL_KeyboardEvent& k);
		void OnQuit();
};

typedef Engine::Singleton <TestState> TheTestState;

#endif